/**
 * 
 */
package co.gov.medellin.sdep.sisdep.admin.service;

import java.util.List;

import co.gov.medellin.sdep.sisdep.admin.exception.ValueObjectException;
import co.gov.medellin.sdep.sisdep.common.SISDEPException;
import co.gov.medellin.sdep.sisdep.common.dto.GenericComponentVO;
import co.gov.medellin.sdep.sisdep.common.dto.GenericComponentValueVO;
import co.gov.medellin.sdep.sisdep.common.service.BaseService;
import co.gov.medellin.sdep.sisdep.model.dao.IValueObjectDAO;

/**
 * @author Usuario
 *
 */
public class ValueObjectServiceImpl extends BaseService implements IValueObjectService {

	/**
	 * 
	 */
	private static final long serialVersionUID = -711019334070697310L;
	
	/** */
	private IValueObjectDAO valueObjectDAO;

	/**
	 * 
	 */
	public ValueObjectServiceImpl() {
	}

	public List getGenericComponents() throws ValueObjectException {
		return getValueObjectDAO().getGenericComponents();
	}

	public List loadTypeMasterList(GenericComponentVO genCompVO)
			throws ValueObjectException {
		return getValueObjectDAO().loadTypeMasterList(genCompVO);
	}

	public void updateTypeMasterList(GenericComponentVO genCompVO)
			throws ValueObjectException {
		getValueObjectDAO().updateTypeMasterList(genCompVO);
	}

	public void saveTypeMasterList(GenericComponentVO genCompVO)
			throws ValueObjectException {
		getValueObjectDAO().saveTypeMasterList(genCompVO);
	}

	public List loadTypeValueMasterList(GenericComponentValueVO gcvSearchVO)
			throws ValueObjectException {
		return getValueObjectDAO().loadTypeValueMasterList(gcvSearchVO);
	}

	public void updateTypeValueMasterList(GenericComponentValueVO gcvVO)
			throws ValueObjectException {
		getValueObjectDAO().updateTypeValueMasterList(gcvVO);
	}

	public void saveTypeValueMasterList(GenericComponentValueVO gcvVO)
			throws ValueObjectException {
		getValueObjectDAO().saveTypeValueMasterList(gcvVO);
	}

	/**
	 * 
	 * Metodo que permite consultar un objeto Tipo usando su ID.
	 * @author carlos.perez@consult-soft.com  18-04-2012 
	 * @param id
	 * @throws SISDEPException
	 */
	public GenericComponentVO getType(String idType) throws ValueObjectException {
		return getValueObjectDAO().findTypeByPrimaryKey(Integer.parseInt(idType));
	}
	
	/**
	 * 
	 * Metodo que permite consultar un objeto Valor Tipo usando su ID.
	 * @author carlos.perez@consult-soft.com  18-04-2012 
	 * @param id
	 * @throws SISDEPException
	 */
	public GenericComponentValueVO getTypeValue(String idTypeValue) throws ValueObjectException {
		return getValueObjectDAO().findTypeValueByPrimaryKey(Integer.parseInt(idTypeValue));
	}
	
	/**
	 * 
	 * Metodo que permite consultar un objeto Valor Tipo usando el Id del Tipo y su Codigo (en base de
	 * datos corresponde al Valor).
	 * 
	 * @author carlos.perez@consult-soft.com  
	 * @version 19-06-2012
	 * 
	 * @param idType
	 * @param typeValueCode
	 * @throws ValueObjectException
	 */
	public GenericComponentValueVO getTypeValueByCode(String idType, String typeValueCode) throws ValueObjectException {
		return getValueObjectDAO().findTypeValueByCode(idType, typeValueCode);
	}

	//----------------------------------------------------------------------
	// Getters and Setters
	//----------------------------------------------------------------------
	
	public IValueObjectDAO getValueObjectDAO() {
		return valueObjectDAO;
	}

	public void setValueObjectDAO(IValueObjectDAO valueObjectDAO) {
		this.valueObjectDAO = valueObjectDAO;
	}
	
}
